/*
 * wk_queue_link.h
 *
 *  Created on: 2012-3-11
 *      Author: tianmax
 */

#ifndef __WK_QUEUE_LINK_H__
#define __WK_QUEUE_LINK_H__

#include "wk_queue_link_types.h"

/*********************************************************************/
/**
 * 初始化链表对列
 */
extern WQueueLink* wk_queue_link_init();

/**
 * 销毁队列
 */
extern void wk_queue_link_destroy(WQueueLink* queue);
/*常用操作函数**********************************************************/

/**
 * 获取链表对列的的容量
 */
extern int wk_queue_link_size(WQueueLink* queue);

/**
 * 获取链表对列中的元素的多少
 */
extern int wk_queue_link_count(WQueueLink* queue);

/**
 * 清空对列中的所有内容，使其成为一个空对列
 */
extern int wk_queue_link_clear(WQueueLink* queue);

/**
 * 对列是否满
 */
extern int wk_queue_link_isfull(WQueueLink* queue);

/**
 * 判断对列是否空
 */
extern int wk_queue_link_isempty(WQueueLink* queue);
/********************************************************************/
/**
 * 将元素e入列
 */
extern void wk_queue_link_enqueue(WQueueLink* queue,WPElement e);

/*
 * 将对一个元素出列不返回
 */
extern void wk_queue_link_dequeue(WQueueLink* queue);

/**
 * 获得对列首部元素
 */
extern WPElement wk_queue_link_front(WQueueLink* queue);

/**
 * 获得对列首部元素并且出列
 */
extern WPElement wk_queue_link_dequeue_front(WQueueLink* queue);

/**
 * 获得对列尾部元素
 */
extern WPElement wk_queue_link_rear(WQueueLink* queue);
/*******************************************************************/
/**
 * 遍历元素相关
 * ctx上下文
 */
extern void* wk_queue_link_iterate(WQueueLink* queue,wk_element_iterate_do iterate_do,void* ctx);
/******************************************************************/
/**
 * wk_slist调试函数
 */
extern void wk_queue_link_debug();
/*******************************************************************/


#endif /* WK_QUEUE_LINK_H_ */
